package main

import "reflect"

func Dispatcher1(name string) func(...interface{}) []interface{} {
	fn, ok := functionRegistry[name]
	if !ok {
		// 处理函数不存在的情况
		return func(args ...interface{}) []interface{} {
			return []interface{}{"Function not found"}
		}
	}

	// 创建调度函数
	dispatchFunc := func(args ...interface{}) []interface{} {
		// 将参数转换为反射值
		inputs := make([]reflect.Value, len(args))
		for i, arg := range args {
			inputs[i] = reflect.ValueOf(arg)
		}

		// 调用函数实现
		result := reflect.ValueOf(fn).Call(inputs)

		// 将结果转换为接口切片
		outputs := make([]interface{}, len(result))
		for i, res := range result {
			outputs[i] = res.Interface()
		}

		// 返回结果
		return outputs
	}

	return dispatchFunc
}
